package br.com.infnet.cultbook.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Pedido implements Serializable {


	private static final long serialVersionUID = 1L;

	@Id
	private int id;
	private String numero;
	@Temporal(TemporalType.DATE)
	private Date data;
	@OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	private List<ItemPedido> itens = null;
	@OneToOne(cascade={CascadeType.PERSIST})
	private Cliente cliente;
	
	public Pedido() {
		itens = new ArrayList<ItemPedido>();
	}

	public Pedido(int id, String numero, Date data, Cliente cliente) {
		super();
		this.id = id;
		this.numero = numero;
		this.data = data;
		this.cliente = cliente;
		itens = new ArrayList<ItemPedido>();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public List<ItemPedido> getItens() {
		return itens;
	}

	public void addItens(int quantidade, Livro livro) {
		itens.add(new ItemPedido(quantidade, livro));
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public double calcularTotal(){
	
		double total = 0;
		
		for (ItemPedido item : itens) {
			total += item.calcularTotal();
		}
		
		return total;
		
	}
	
	
	
}
